package com.example.demo;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class MyDouble {
    /**
     * 传入字符串,返回Double类型小数
     * @param s
     * @return  比如传入"3.14159"返回3.14159
     */
    public Double getDoubleForStr(String s){
        return new BigDecimal(s).doubleValue();
    }

    /**
     * 传入一个小数,返回一个小数,你说保留几位就保留几位,
     * 需要注意的是这个四舍五入法不是特别准,比如3.55保留1位小数输出时是3.5
     * 但大多情况下是准确的
     * @param a
     * @param m
     * @return 比如传进去(3,3.14159) 返回3.142 采用四舍五入法
     */
    public Double getDoubleAsNum(Double a,int m){
        return new BigDecimal(a).setScale(m, RoundingMode.HALF_UP).doubleValue();
    }

    /**
     * 传入一个小数,返回一个小数,你说保留几位就保留几位,
     * @param a
     * @param m
     * @return  比如传入(2,3.9999) 返回3.99   后面的直接不要了
     */
    public Double getDoubleASNumD(Double a,int m){
        return new BigDecimal(a).setScale(m, RoundingMode.DOWN).doubleValue();
    }

    /**
     * 传入一个Long类型,返回一个Double类型
     * @param l
     * @return  比如传入88888888L 返回8.8888888E7  也就是88888888.00
     */
    public Double getDoubleForLong(Long l){
        return new BigDecimal(l).doubleValue();
    }

    /**
     * 传入一个int类型   返回一个double类型
     * @param k
     * @return  比如传入6 返回6.0
     */
    public Double getDoubleForInt(int k){
        return new BigDecimal(k).doubleValue();
    }
}
